import * as XLSX from 'xlsx';

// 封装导出 Excel 的函数
export function exportExcel(data, fieldMapping, fileName) {
    // 检查数据和字段映射是否为空
    if (!data || data.length === 0 || !fieldMapping) {
        console.warn('没有数据或字段映射可供导出');
        return;
    }

    // 从字段映射中提取表头
    const headers = Object.values(fieldMapping);

    // 构造工作表数据，第一行为表头
    const ws_data = [headers];

    // 遍历数据，将每一行数据映射到表头字段
    data.forEach((item) => {
        const row = headers.map((header) => {
            // 根据表头字段名获取数据字段的值
            const field = Object.keys(fieldMapping).find(key => fieldMapping[key] === header);
            return item[field] || '';
        });
        ws_data.push(row); // 将处理后的行数据添加到工作表数据中
    });

    // 创建工作表
    const ws = XLSX.utils.aoa_to_sheet(ws_data);

    // 创建工作簿
    const wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');

    // 导出文件
    XLSX.writeFile(wb, `${fileName}.xlsx`);
}